Commercially available hardware load balancers that act as a gateway for network traffic are well-known. These load balancers typically distribute network traffic amongst a collection of directly-attached servers directly by rewriting the destination address of incoming packets to that of the desired destination server. However, such load balancers are generally not very good at distributing amongst geographically disparate destination servers, at least not without routing traffic in an inefficient way such as by “hair-pinning” the traffic back outward into the wide area network. Even then, conventional load balancing relies on a single instance of the hardware device or a logical cluster at a single physical location. There is typically no geographically diverse failover.
While techniques such as so-called “global” load balancing (which uses a domain name system to redirect traffic) and Anycast (which advertises an IP address into routing protocols from multiple origin locations), are sometimes used to supplement the single-instance hardware load balancers, even systems using a combination of all three techniques still suffer from load balancing challenges such as inefficient routing over large geographic areas and single points of failure. Moreover, recent limited experiments in OpenFlow-based load balancing have failed to successfully address these and other problems.